#ifndef POISSONSOLVER_H
#define POISSONSOLVER_H

#include "Grid.h"
#include "BoundaryConditions.h"
#include <Eigen/Dense>
#include <Eigen/Sparse>

class PoissonSolver {
public:
    PoissonSolver(Grid grid, BoundaryConditions bc, std::function<double(double, double)> f);
    void solve();
    Eigen::VectorXd getSolution() const;

private:
    Grid grid;
    BoundaryConditions bc;
    std::function<double(double, double)> f;
    Eigen::VectorXd solution;
};

#endif